import type { FormItemRule } from 'naive-ui';
import { isEmpty } from './string';

export function username(rule: FormItemRule, value: string) {
  if (isEmpty(value)) {
    if (rule.required) {
      return new Error('用户名不能为空');
    }
    return true;
  }
  if (!/^[a-zA-Z0-9]{6,16}$/.test(value)) {
    return new Error('用户名格式错误,必须为6-16位字母数字组成');
  }
  return true;
}

export function roleName(rule: FormItemRule, value: string) {
  if (isEmpty(value)) {
    if (rule.required) {
      return new Error('角色名不能为空');
    }
    return true;
  }
  return true;
}

export function privileges(rule: FormItemRule, value: []) {
  if (!value || value.length === 0) {
    if (rule.required) {
      return new Error('至少分配一个权限');
    }
    return true;
  }
  return true;
}

export function password(rule: FormItemRule, value: string) {
  if (isEmpty(value)) {
    if (rule.required) {
      return new Error('密码不能为空');
    }
    return true;
  }
  if (!/^(?![\d]+$)(?![a-z]+$)(?![A-Z]+$)(?![\da-z]+$)(?![\dA-Z]+$)[\dA-Za-z\W]{8,50}$/.test(value)) {
    return new Error('密码由8-50位字母数字组成,必须包含大小写字母');
  }
  return true;
}

export function trueName(rule: FormItemRule, value: string) {
  if (isEmpty(value)) {
    if (rule.required) {
      return new Error('名称不能为空');
    }
    return true;
  }
  if (value.length > 32) {
    return new Error('名称最多32位');
  }
  return true;
}

export function mobile(rule: FormItemRule, value: string) {
  if (isEmpty(value)) {
    if (rule.required) {
      return new Error('手机号不能为空');
    }
    return true;
  }
  if (!/^1[35678]\d\d{8}/.test(value)) {
    return new Error('手机号格式错误');
  }
  return true;
}
